﻿using DAL;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BEL
{
    public class Barrio
    {

        #region atributos
        private int _barId;
        private String _barNombre;
        private Ciudad _ciudad;
        #endregion

        #region properties
        public int BarId
        {
            get { return _barId; }
            set { _barId = value; }
        }        

        public String BarNombre
        {
            get { return _barNombre; }
            set { _barNombre = value; }
        }       

        internal Ciudad Ciudad
        {
            get { return _ciudad; }
            set { _ciudad = value; }
        }

        #endregion

        #region constructores

        public Barrio(int barrioId, String barrioNombre, Ciudad ciudad)
        {
            _barId = barrioId;
            _barNombre = barrioNombre;
            _ciudad = ciudad;

        }

        public Barrio()
        {

        }

        #endregion

        #region funciones

        public List<Barrio> BuscarBarrios()
        {
            List<Barrio> pCollection = new List<Barrio>();
            SqlDataReader dReader = DALBarrios.BuscarBarrios();

            while (dReader.Read())
            {
                Barrio bar = LoadBarrio(dReader);
                pCollection.Add(bar);
            }
            dReader.Close();
            return pCollection;
        }

        public static Barrio BuscarBarrioPorId(int BarrioId){
            DALBarrios dal = new DALBarrios();
            SqlDataReader dr = dal.BuscarBarriosXId(BarrioId);
            Barrio ret = new Barrio();
            if(dr.Read()) {
                ret.BarId = Convert.ToInt32(dr["BarId"]);
                ret.BarNombre = Convert.ToString(dr["BarNombre"]);
                ret.Ciudad = Ciudad.BuscarCiudadesPorId(Convert.ToInt32(dr["CiuId"]));            
            }            
            return ret;
        }




        private static Barrio LoadBarrio(IDataReader dReader)
        {

            Barrio barrioEntity = new Barrio();
            barrioEntity.BarId = (DBNull.Value == dReader["BarId"]) ? 0 : (int)dReader["BarId"];
            barrioEntity.BarNombre = (DBNull.Value == dReader["BarNombre"]) ? string.Empty : (string)dReader["BarNombre"];

            return barrioEntity;
        }

        private Hashtable toHashtable()
        {
            Hashtable hash = new Hashtable();

            if (!string.IsNullOrEmpty(BarId.ToString()))
            {
                hash.Add("BarId", this.BarId);
            }
            hash.Add("BarNombre", this.BarNombre);
            return hash;

        }
        private void fromHashtable(Hashtable ht)
        {

            this.BarId = Convert.ToInt32(ht["BarId"].ToString());
            this.BarNombre = ht["BarNombre"].ToString();

        }
        #endregion

    }
}
